package io.lvdaxian.classLoaderTest;

public class Test01 {
  public static void main(String[] args) {
    // 获取系统类加载器
    // （这个系统 class loader 其实就是我们默认的 app loader）
    ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
    System.out.println("systemClassLoader = " + systemClassLoader);
    System.out.println(TestLoader001.class.getClassLoader());
    System.out.println(TestLoader001.class.getClassLoader() == systemClassLoader);
    
    System.out.println("---------------------------------------");
    
    // 获取父类加载器
    // 这个父类加载器 其实是通过 组织模式来构建的，不是父子关系
    ClassLoader parent = systemClassLoader.getParent();
    System.out.println("parent = " + parent);
    // 继续获取上层的类加载器 这个引导型 class loader 是无法通过运行得到的
    ClassLoader bootstrapClassLoader = parent.getParent();
    System.out.println("bootstrapClassLoader = " + bootstrapClassLoader);
    // 自定义Java类
    ClassLoader classLoader = TestLoader002.class.getClassLoader();
    System.out.println("classLoader = " + classLoader);
    // Java系统类
    ClassLoader classLoader1 = String.class.getClassLoader();
    System.out.println("classLoader1 = " + classLoader1);
  }
}
